package com.luoani;

import java.util.HashMap;
import java.util.Map;

public class MapPractice {
    public static void main(String[] args) {
        Map<String,String> data = new HashMap<>();
        data.put("小王","A");
        data.put("小张","B");
        data.put("小李","C");
        data.put("小赵","D");
        data.put("小孙2","E");
        data.put("小孙","F");
        data.put("小孙1","F");
        data.put("小孙3","F");
        data.put("小孙4","F");
        data.put("小孙5","F");
        data.put("小孙6","F");
        data.put("小孙7","B");
        data.put("小孙8","B");
        data.put("小孙9","B");
        data.put("小孙10","B");
        data.put("小孙11","B");
        data.put("小孙12","B");
        data.put("小孙13","C");

        //  调用方法统计
        count(data);
    }
    public static  void  count(Map<String,String> data){
        /**
         * 1.创建一个新的Map集合，用来存储统计结果
         * 2.遍历data集合，获取每个key和value
         * 3将value(A)拿出来，将value(A)作为key存储到新的Map集合中
         * 4.如果新的Map集合中已经存在value(A)，则value(A)对应的value+1
         * 5.如果新的Map集合中不存在value(A)，则将value(A)作为key，1作为value存储到新的Map集合中
         * 6.遍历新的Map集合，打印结果
         * */
        Map<String,Integer> resultMap = new HashMap<>();

        data.forEach((k,v)->{
//            3将value(A)拿出来，将value(A)作为key存储到新的Map集合中
//            4.如果新的Map集合中已经存在value(A)，则value(A)对应的value+1
//            5.如果新的Map集合中不存在value(A)，则将value(A)作为key，1作为value存储到新的Map集合中
            boolean  containsKey = resultMap.containsKey(v);
            if(containsKey){
                Integer oldCount = resultMap.get(v);
                resultMap.put(v,oldCount+1);
            }else{
                resultMap.put(v,1);
            }
        });
        //6.遍历新的Map集合，打印结果
        resultMap.forEach((k,v)->{
            System.out.println(k+"-->"+v);
        });
    }
}
